前言
本文是重构读书笔记系列第一篇
什么是重构
重构,每个人都对重构有自己的理解和定义。
文中提到的名词和动词的理解
- 名词,对软件内部结构的一种调整,在不改变软件可观察行为的前提下,提高可理解性。降低修改成本。
- 动词,使用一系列重构方法调整结构。
重构要扩展的两点
- 使软件更容易被理解和修改。
- 不会改变软件可观察的行为。
对用户是透明的。
为什么要重构
重构改进软件设计
软件是会腐烂的。
重构->让所有的东西回到应该在的地方->经常性的重构可以使代码维持自己该有的形态
通过重构来消除不良设计程序里的冗余代码,使得所有事物和行为在代码中只表述一次。
重构使软件更容易理解。
先重构细节
擦掉窗户上的污垢,可以看得更远
重构在研究代码时候可以带到更高的层次上。
重构帮助找到bug
理解程序结构的同时发现bug
重构提高编程速度
良好的设计是根本,重构防止软件腐烂,提高设计质量。
何时重构
重构不是一件应该特别拔出时间来做的事情,应该随时随地进行。
三分法则
同一件事情,如果第三次还在做,就该考虑重构,要有这个警惕。
添加功能时重构
在前进的过程中把代码理清,可以从中理解更多东西。
这个就是要求在写代码的时候不断思考这样做是否是最好的,如果用某种方式来设计,添加特性会简单的多。
修补错误时重构
收到一份错误报告,这就是需要重构的信号
复审代码时重构
code review
不断改进不断认识更高层次。
重构的难题
修改接口
如何修改已发布的接口
留下旧接口,并调用新函数,同时使用@Deprecated标记旧接口。
何时不该重构
讯号:现有代码根本不能正常运作
自己要把握住重写和重构的度。
重构与性能
编写快速软件的秘密就是: 首先写出可调的软件,然后调整它以求获得足够的速度。
三种快速编写软件的方法
- 时间预算法
只用于性能要求极高的地方。
给每个组件预先分配资源,绝对不能超出自己的预算。
- 持续关注法
任何时间做任何事情都要关注系统性能。
这种方法的缺点在于,大半时间浪费在海面上的冰山
- 专门的性能优化阶段
发现热点,去除热点
使用度量工具监控程序的运行,每走一步都要编译测试在此度量如果没能提升性能就应该撤销此次修改